The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Traditional centralized application systems handle the fundamental transaction aspects of application processing (such as, for example, Atomicity, Consistency, Isolation, and Durability (ACID) properties) very effectively. However, with respect to transaction management, distributed application systems pose a set of problems not encountered in centralized systems. For example, a distributed application system may include many computer components connected by some communication network; thus, the distributed application system is more vulnerable to the failures of components such as server nodes, network links, operating systems, and application services. In turn, such failures may often lead to abnormal behavior during application execution and may adversely affect various aspects of transaction management.
In distributed application systems, transaction management is typically provided by components that execute in the application layer. For example, all the logic for transaction management in a distributed application system is typically embedded in a transaction service Application Programming Interface (API), which is provided by an end station such as, for example, by a distributed transaction server executing on a host computer system. The transaction service API would typically provide calls for initiating/completing transactions and for controlling various resource managers that are operable to manage the resources participating in initiated transactions. However, since such transactions typically involve resources distributed across one or more networks, failures of various network components such as server nodes, network links, operating systems, and application services are more difficult to detect. This may cause uncertainty about resource availability, which in turn may adversely affect transaction management and execution.